From: Richard M. Stallman Date: Tue, 3 May 1994 07:42:26 +0000 (+0000) Subject: (display_text_line): Since HPOS is negative, avoid X-Git-Tag: archive/raspbian/1%29.2+1-2+rpi1^2~5^2~91770 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:///%22http:/www.example.com/cgi/%22https:/www.github.com/%22bookmarks:/?a=commitdiff_plain;h=a007eef636c713ed46e38967fc818d8bd4ea6f2f;p=emacs.git (display_text_line): Since HPOS is negative, avoid writing before the beginning of the charstarts line. --- diff --git a/src/xdisp.c b/src/xdisp.c index 2c6ace5032c..eb3e78a031f 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -2051,7 +2051,7 @@ display_text_line (w, start, vpos, hpos, taboffset) p1start = p1; charstart = desired_glyphs->charstarts[vpos] + hpos; /* In case we don't ever write anything into it... */ - *charstart = -1; + desired_glyphs->charstarts[vpos][XFASTINT (w->left)] = -1; end = ZV; leftmargin = desired_glyphs->glyphs[vpos] + XFASTINT (w->left); endp = leftmargin + width; @@ -2280,12 +2280,12 @@ display_text_line (w, start, vpos, hpos, taboffset) And don't clobber anything to the left of that. */ if (p1prev < leftmargin) { - charstart[0] = pos; - p2x = charstart; + p2x = charstart + (leftmargin - p1start); + *p2x = pos; } /* This loop skips over the char p2x initially points to. */ - while (++p2x != p2) + while (++p2x < p2) *p2x = -1; } } @@ -2307,7 +2307,10 @@ display_text_line (w, start, vpos, hpos, taboffset) /* Add 1 in the endtest to compensate for the fact that ENDP was made from WIDTH, which is 1 less than the window's actual internal width. */ - for (i = p1 - p1start + 1; i < endp - p1start + 1; i++) + i = p1 - p1start + 1; + if (p1 < leftmargin) + i += leftmargin - p1; + for (; i < endp - p1start + 1; i++) charstart[i] = 0; /* Handle continuation in middle of a character */